// 修复所有商品渠道价格的脚本
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();

async function fixAllPrices() {
  try {
    console.log('开始修复所有商品的渠道价格...');
    
    // 1. 获取所有商品
    const products = await prisma.product.findMany({
      where: { status: true }
    });
    console.log(`找到 ${products.length} 个商品`);
    
    // 2. 获取所有渠道
    const channels = await prisma.channel.findMany({
      where: { status: true }
    });
    console.log(`找到 ${channels.length} 个渠道`);
    
    // 3. 遍历每个商品
    for (const product of products) {
      console.log(`\n处理商品: ${product.name} (ID=${product.id})`);
      
      // 查找该商品的所有渠道价格
      const prices = await prisma.productPrice.findMany({
        where: { productId: product.id }
      });
      
      if (prices.length === 0) {
        console.log(`  商品 ${product.name} 没有任何渠道价格设置，将使用标准价格 ${product.price} 元`);
        
        // 为所有渠道创建价格记录，使用商品标准价格
        for (const channel of channels) {
          await prisma.productPrice.create({
            data: {
              productId: product.id,
              channelId: channel.id,
              price: product.price,
              discount: 1
            }
          });
          console.log(`  已为渠道 ${channel.name} (ID=${channel.id}) 创建价格: ${product.price} 元`);
        }
      } else {
        // 查找最低价格作为统一价格
        const lowestPrice = Math.min(...prices.map(p => p.price));
        console.log(`  商品 ${product.name} 已有 ${prices.length} 个渠道价格设置，最低价格为 ${lowestPrice} 元`);
        
        // 确保每个渠道都有价格记录，并且价格一致
        for (const channel of channels) {
          const existingPrice = await prisma.productPrice.findUnique({
            where: {
              productId_channelId: {
                productId: product.id,
                channelId: channel.id
              }
            }
          });
          
          if (existingPrice) {
            // 如果价格不一致，更新为最低价格
            if (existingPrice.price !== lowestPrice) {
              await prisma.productPrice.update({
                where: {
                  productId_channelId: {
                    productId: product.id,
                    channelId: channel.id
                  }
                },
                data: {
                  price: lowestPrice,
                  discount: 1
                }
              });
              console.log(`  已更新渠道 ${channel.name} (ID=${channel.id}) 的价格: ${existingPrice.price} -> ${lowestPrice} 元`);
            } else {
              console.log(`  渠道 ${channel.name} (ID=${channel.id}) 的价格已经是 ${lowestPrice} 元，无需更新`);
            }
          } else {
            // 创建新的价格记录
            await prisma.productPrice.create({
              data: {
                productId: product.id,
                channelId: channel.id,
                price: lowestPrice,
                discount: 1
              }
            });
            console.log(`  已为渠道 ${channel.name} (ID=${channel.id}) 创建价格: ${lowestPrice} 元`);
          }
        }
      }
    }
    
    console.log('\n所有商品渠道价格修复完成');
  } catch (error) {
    console.error('修复价格出错:', error);
  } finally {
    await prisma.$disconnect();
  }
}

// 执行修复
fixAllPrices(); 